package authorized

import (
	"github.com/xinliangnote/go-gin-api/internal/repository/mysql"
	"github.com/xinliangnote/go-gin-api/internal/repository/redis"
	"context"
)

var _ ServiceInt = (*serviceSt)(nil)

type ServiceInt interface {
	/*
		@desc: 通过验证码登陆
		@param ctx: 上下文，可以控制执行时间
		@param phone_number: 登陆手机号
		@param verify_code: 登陆短信验证码
		@return string: 返回的token字符串
		@return error: 错误信息
	*/
	LoginByVerifyCode(ctx context.Context, phone_number string, verify_code string)(string, error)
	/*
		@desc: 发送登陆验证码
		@param phone_number: 手机号
		@param verify_code: 登陆短信验证码
		@return int32: 返回码
		@return error: 错误信息
	*/
	SendLoginVerifyCode(phone_number string, verify_code string)(int32, error)
}

type serviceSt struct {
	db         mysql.Repo
	cache      redis.Repo
}

func New(db mysql.Repo, cache redis.Repo) ServiceInt {
	return &serviceSt{
		db:         db,
		cache:      cache,
	}
}